////https://www.luogu.com.cn/problem/P1541
//
//#include<iostream>
//#include<algorithm>
//using namespace std;
//
//const int N = 360, M = 130;
//int x[N], dp[M][M][M][M], cnt[5];
//
//int main()
//{
//	int n, m; cin >> n >> m;
//	for (int i = 1; i <= n; i++) cin >> x[i];
//	for (int i = 1; i <= m; i++)
//	{
//		int t; cin >> t;
//		cnt[t]++;
//	}
//	dp[0][0][0][0] = x[1];
//	for (int a = 0; a <= cnt[1]; a++)
//	{
//		for (int b = 0; b <= cnt[2]; b++)
//		{
//			for (int c = 0; c <= cnt[3]; c++)
//			{
//				for (int d = 0; d <= cnt[4]; d++)
//				{
//					int tmp = 0;
//					int i = a + b * 2 + c * 3 + d * 4 + 1;
//					if (a > 0) tmp = max(tmp, dp[a - 1][b][c][d]);
//					if (b > 0) tmp = max(tmp, dp[a][b - 1][c][d]);
//					if (c > 0) tmp = max(tmp, dp[a][b][c - 1][d]);
//					if (d > 0) tmp = max(tmp, dp[a][b][c][d - 1]);
//					tmp += x[i];
//					dp[a][b][c][d] = tmp;
//				}
//			}
//		}
//	}
//	cout << dp[cnt[1]][cnt[2]][cnt[3]][cnt[4]];
//	return 0;
//}